package it.fantacalcio.struts.action.user.forum;

import it.fantacalcio.model.Argomento;
import it.fantacalcio.model.Messaggio;
import it.fantacalcio.model.User;
import it.fantacalcio.spring.service.MyServiceFactory;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class ConfermaCRUDMessaggioAction extends DispatchAction {
	
	@Override
	protected ActionForward dispatchMethod(ActionMapping arg0, ActionForm arg1,
			HttpServletRequest arg2, HttpServletResponse arg3, String arg4)
			throws Exception {
		User userInSession = (User) arg2.getSession().getAttribute("userInSession");
		if(userInSession==null || userInSession.getAttivo().equals("NO")){
			return arg0.findForward("noninsession");
		}
		return super.dispatchMethod(arg0, arg1, arg2, arg3, arg4);
	}
	
	public ActionForward aggiungi(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		Argomento argomento = new Argomento();
		Long idArgomento =Long.parseLong(request.getParameter("idArgomento"));
		String testo = request.getParameter("testo");
		try {
			Messaggio messaggio = new Messaggio();
			messaggio.setMessaggio(testo);
			messaggio.setUser((User) request.getSession().getAttribute("userInSession"));
			messaggio.setData(new Date());
			argomento = MyServiceFactory.getArgomentoService().get(idArgomento);
			messaggio.setArgomento(argomento);
			int ris = MyServiceFactory.getMessaggioService().salva(messaggio);
			if(ris < 1){
				request.setAttribute("id", argomento.getId());
				return mapping.findForward("ok");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
			return mapping.findForward("error");
		}
		request.setAttribute("id", argomento.getId());
		return mapping.findForward("ok");
	}
	
	public ActionForward cancella(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {
		
		Argomento argomento = new Argomento();
		Long id =Long.parseLong(request.getParameter("id"));
		try {
			Messaggio messaggio = MyServiceFactory.getMessaggioService().get(id);
			argomento = messaggio.getArgomento();
			int ris = MyServiceFactory.getMessaggioService().cancella(messaggio);
			if(ris < 1){
				request.setAttribute("id", argomento.getId());
				return mapping.findForward("ok");
			}
		} catch (Exception e) {
			e.printStackTrace();
			return mapping.findForward("error");
		}
		request.setAttribute("id", argomento.getId());
		return mapping.findForward("ok");
	}
}
